package simulationgps;
import java.util.ArrayList;

public class Carrefour {
	private String nom;
	public String getNom() {
		return nom;
	}
	public void setNom(String nom) {
		this.nom = nom;
	}
	private MaillonTroncon maillonTroncon=null;
	private MaillonTroncon listeParcourable;
	
	// Constructeur
	public Carrefour(String nom) {
		this.nom = nom;
	}
	/** 
	 * Ajout d'un troncon lié au carrefour
    */
	public void ajoutTroncon(Troncon troncon) {
		MaillonTroncon mtr= new MaillonTroncon(null,troncon,this.maillonTroncon);
		this.maillonTroncon=mtr;
	}
	public MaillonTroncon getMaillonTroncon() {
		return maillonTroncon;
	}
	/** Affichage d'un carrefour */
	public void afficherCarrefour() {
		System.out.print(this.nom);
	}
	
	public boolean peutParcourir(Troncon tr){
		if(tr.parcourir(this)!=null){
			return true;
		}
		return false;
		   			
	}
	
	public MaillonTroncon tronconsParcourables(MaillonTroncon mtr){
		MaillonTroncon retour= new MaillonTroncon();
		if(mtr!=null && peutParcourir(mtr.getCourant())){
			retour.setCourant(mtr.getCourant());
			retour.setSuivant(tronconsParcourables(mtr.getSuivant()));
		}
		//while()
		return retour;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((nom == null) ? 0 : nom.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Carrefour other = (Carrefour) obj;
		if (nom == null) {
			if (other.nom != null)
				return false;
		} else if (!nom.equals(other.nom))
			return false;
		return true;
	}
}
